/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package ec.edu.espe.distribuidas.ejemplomaven.web;

import ec.edu.espe.distribuidas.aseguradora.modelo.Plan;
import ec.edu.espe.distribuidas.aseguradora.servicio.PlanServicio;
import ec.edu.espe.distribuidas.aseguradora.web.util.BotonesBean;
import ec.edu.espe.distribuidas.aseguradora.web.util.MensajesGenericos;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.event.ActionEvent;
import org.apache.commons.beanutils.BeanUtils;

/**
 *
 * @author alejandro
 */
@ManagedBean
@ViewScoped
public class PlanBean extends BotonesBean{
    
    private static final String ENTIDAD = "Plan";
    
    @EJB
    private PlanServicio planServicio;
    
    private List<Plan> planes;
    private Plan plan;
    private Plan planSeleccionado;
    
    @PostConstruct
    @Override
    public void postConstructor(){
        super.sinSeleccion();
        this.planes=this.planServicio.obtenerTodos();
        
    }
    
    public void filaSeleccionada(ActionEvent evento) {
        if (planSeleccionado instanceof Plan) {
            super.seleccionadoUno();
        } else {
            super.sinSeleccion();
        }
    }
    
    public void nuevo(){
        super.crear();
        this.plan=new Plan();
    }
    
    public void cargarTabla(){
        this.planes=this.planServicio.obtenerTodos();
    }
    
     public void modificar(){
        try {
            this.plan = new Plan();
            BeanUtils.copyProperties(this.plan, this.planSeleccionado);
            super.modificar();
            
        } catch (Exception e) {
            MensajesGenericos.errorCopyProperties();
        }
    }
     
     public void eliminar(){
        this.planServicio.eliminar(this.planSeleccionado.getCodPlan());
        this.planes.remove(this.planSeleccionado);
        super.sinSeleccion();
    }
     
     public void guardar(){
        try {
            if (super.getEnRegistro()) {
                this.planServicio.crear(this.plan);
                this.planes.add(this.plan);
                super.sinSeleccion();
                
            } else {
                this.planServicio.modificar(this.plan);
                cargarTabla();
                super.seleccionadoUno();
            }
        } catch (Exception e) {
            MensajesGenericos.errorGuardar();
        }
    }
     
     public void cancelar(){
        if (super.getEnRegistro()) {
            super.sinSeleccion();
        } else {
            super.seleccionadoUno();
        }
        MensajesGenericos.infoCancelar();
    }

    public List<Plan> getPlanes() {
        return planes;
    }

    public PlanServicio getPlanServicio() {
        return planServicio;
    }

    public void setPlanServicio(PlanServicio planServicio) {
        this.planServicio = planServicio;
    }

    public Plan getPlan() {
        return plan;
    }

    public void setPlan(Plan plan) {
        this.plan = plan;
    }

    public Plan getPlanSeleccionado() {
        return planSeleccionado;
    }

    public void setPlanSeleccionado(Plan planSeleccionado) {
        this.planSeleccionado = planSeleccionado;
    }
     
     
    
}
